home *** CD-ROM | disk | FTP | other *** search
/ Super PC 34 / Super PC 34 (Shareware).iso / spc / UTIL / DJGPP2 / CONTRIB / ASPI.ZIP / aspi_int.h next >
Encoding:
C/C++ Source or Header  |  1995-03-25  |  6.7 KB  |  155 lines

  1.  
  2. #define PK __attribute__((packed))
  3.  
  4. typedef unsigned char BYTE;
  5. typedef unsigned short WORD;
  6. typedef unsigned long DWORD;
  7. typedef void (*FARPROC)();
  8. #define far
  9.  
  10. typedef BYTE *LPSRB;
  11.  
  12. #define SENSE_LEN        14        /*  Default sense buffer length */
  13.  
  14. #define SRB_DIR_SCSI        0x00        /*  Direction determined by SCSI command */
  15. #define SRB_DIR_IN        0x08        /*  Transfer from SCSI target to host */
  16. #define SRB_DIR_OUT        0x10        /*  Transfer from host to SCSI targetw */
  17. #define SRB_POSTING        0x01        /*  Enable ASPI posting */
  18.  
  19. #define WM_ASPIPOST        0x4D42        /*  ASPI Post message */
  20.  
  21. /***************************************************************************
  22.                          %%% ASPI Command Definitions %%%
  23. ***************************************************************************/
  24. #define SC_HA_INQUIRY        0x00        /*  Host adapter inquiry */
  25. #define SC_GET_DEV_TYPE        0x01        /*  Get device type */
  26. #define SC_EXEC_SCSI_CMD    0x02        /*  Execute SCSI command */
  27. #define SC_ABORT_SRB        0x03        /*  Abort an SRB */
  28. #define SC_RESET_DEV        0x04        /*  SCSI bus device reset */
  29.  
  30. /***************************************************************************
  31.                                   %%% SRB Status %%%
  32. ***************************************************************************/
  33. #define SS_PENDING        0x00        /*  SRB being processed */
  34. #define SS_COMP            0x01        /*  SRB completed without error */
  35. #define SS_ABORTED        0x02        /*  SRB aborted */
  36. #define SS_ABORT_FAIL        0x03        /*  Unable to abort SRB */
  37. #define SS_ERR             0x04        /*  SRB completed with error */
  38.  
  39. #define SS_INVALID_CMD        0x80        /*  Invalid ASPI command */
  40. #define SS_INVALID_HA        0x81        /*  Invalid host adapter number */
  41. #define SS_NO_DEVICE        0x82        /*  SCSI device not installed */
  42.  
  43. #define SS_INVALID_SRB        0xE0        /*  Invalid parameter set in SRB */
  44. #define SS_OLD_MANAGER        0xE1        /*  ASPI manager doesn't support Windows */
  45. #define SS_ILLEGAL_MODE        0xE2        /*  Unsupported Windows mode */
  46. #define SS_NO_ASPI        0xE3        /*  No ASPI managers resident */
  47. #define SS_FAILED_INIT        0xE4        /*  ASPI for windows failed init */
  48. #define SS_ASPI_IS_BUSY        0xE5        /*  No resources available to execute cmd */
  49. #define SS_BUFFER_TO_BIG    0xE6        /*  Buffer size to big to handle! */
  50.  
  51. /***************************************************************************
  52.                             %%% Host Adapter Status %%%
  53. ***************************************************************************/
  54. #define HASTAT_OK        0x00        /*  Host adapter did not detect an error */
  55. #define HASTAT_SEL_TO        0x11        /*  Selection Timeout */
  56. #define HASTAT_DO_DU        0x12        /*  Data overrun data underrun */
  57. #define HASTAT_BUS_FREE        0x13        /*  Unexpected bus free */
  58. #define HASTAT_PHASE_ERR    0x14        /*  Target bus phase sequence failure */
  59.  
  60. /***************************************************************************
  61.              %%% SRB - HOST ADAPTER INQUIRY - SC_HA_INQUIRY %%%
  62. ***************************************************************************/
  63. typedef struct {
  64.  
  65.     BYTE    SRB_Cmd;            /*  ASPI command code = SC_HA_INQUIRY */
  66.     BYTE    SRB_Status;            /*  ASPI command status byte */
  67.     BYTE    SRB_HaId;            /*  ASPI host adapter number */
  68.     BYTE    SRB_Flags;            /*  ASPI request flags */
  69.     DWORD    SRB_Hdr_Rsvd;            /*  Reserved, MUST = 0 */
  70.     BYTE    HA_Count;            /*  Number of host adapters present */
  71.     BYTE    HA_SCSI_ID;            /*  SCSI ID of host adapter */
  72.     BYTE    HA_ManagerId[16] PK;        /*  String describing the manager */
  73.     BYTE    HA_Identifier[16] PK;        /*  String describing the host adapter */
  74.     BYTE    HA_Unique[16] PK;        /*  Host Adapter Unique parameters */
  75.  
  76. } SRB_HAInquiry;
  77.  
  78. /* *************************************************************************** */
  79. /*               %%% SRB - GET DEVICE TYPE - SC_GET_DEV_TYPE %%% */
  80. /* *************************************************************************** */
  81. typedef struct {
  82.  
  83.     BYTE    SRB_Cmd;            /*  ASPI command code = SC_GET_DEV_TYPE */
  84.     BYTE    SRB_Status;            /*  ASPI command status byte */
  85.     BYTE    SRB_HaId;            /*  ASPI host adapter number */
  86.     BYTE    SRB_Flags;            /*  ASPI request flags */
  87.     DWORD    SRB_Hdr_Rsvd PK;        /*  Reserved, MUST = 0 */
  88.     BYTE    SRB_Target;            /*  Target's SCSI ID */
  89.     BYTE    SRB_Lun;            /*  Target's LUN number */
  90.     BYTE    SRB_DeviceType;            /*  Target's peripheral device type */
  91.  
  92. } SRB_GDEVBlock;
  93.  
  94. /* *************************************************************************** */
  95. /*           %%% SRB - EXECUTE SCSI COMMAND - SC_EXEC_SCSI_CMD %%% */
  96. /* *************************************************************************** */
  97.  
  98. typedef struct {                /*  Common prefix for CDBs */
  99.  
  100.     BYTE    SRB_Cmd;            /*  ASPI command code = SC_EXEC_SCSI_CMD */
  101.     BYTE    SRB_Status;            /*  ASPI command status byte */
  102.     BYTE    SRB_HaId;            /*  ASPI host adapter number */
  103.     BYTE    SRB_Flags;            /*  ASPI request flags */
  104.     DWORD    SRB_Hdr_Rsvd PK;        /*  Reserved, MUST = 0 */
  105.     BYTE    SRB_Target;            /*  Target's SCSI ID */
  106.     BYTE    SRB_Lun;            /*  Target's LUN number */
  107.     DWORD    SRB_BufLen PK;            /*  Data Allocation Length */
  108.     BYTE    SRB_SenseLen;            /*  Sense Allocation Length */
  109.     WORD    SRB_BufPointerOfs PK;        /*  Data Buffer Pointer */
  110.     WORD    SRB_BufPointerSeg PK;        /*  Data Buffer Pointer */
  111.     DWORD    SRB_Rsvd1 PK;            /*  Reserved, MUST = 0 */
  112.     BYTE    SRB_CDBLen;            /*  CDB Length = 6 */
  113.     BYTE    SRB_HaStat;            /*     Host Adapter Status */
  114.     BYTE    SRB_TargStat;            /*     Target Status */
  115.     FARPROC SRB_PostProc PK;        /*  Post routine */
  116.  
  117.     BYTE    SRB_Rsvd2[34] PK;        /*  Reserved, MUST = 0 */
  118.  
  119.     BYTE    cptr[12+SENSE_LEN] PK;
  120. } SRB_ExecSCSICmd;
  121.  
  122. /* *************************************************************************** */
  123. /*                   %%% SRB - ABORT AN SRB - SC_ABORT_SRB %%% */
  124. /* *************************************************************************** */
  125. typedef struct {
  126.  
  127.     BYTE    SRB_Cmd;            /*  ASPI command code = SC_ABORT_SRB */
  128.     BYTE    SRB_Status;            /*  ASPI command status byte */
  129.     BYTE    SRB_HaId;            /*  ASPI host adapter number */
  130.     BYTE    SRB_Flags;            /*  ASPI request flags */
  131.     DWORD    SRB_Hdr_Rsvd PK;        /*  Reserved, MUST = 0 */
  132.     LPSRB    SRB_ToAbort PK;            /*  Pointer to SRB to abort */
  133.  
  134. } SRB_Abort;
  135.  
  136. /* *************************************************************************** */
  137. /*                 %%% SRB - BUS DEVICE RESET - SC_RESET_DEV %%% */
  138. /* *************************************************************************** */
  139. typedef struct {
  140.  
  141.     BYTE    SRB_Cmd;            /*  ASPI command code = SC_RESET_DEV */
  142.     BYTE    SRB_Status;            /*  ASPI command status byte */
  143.     BYTE    SRB_HaId;            /*  ASPI host adapter number */
  144.     BYTE    SRB_Flags;            /*  ASPI request flags */
  145.     DWORD    SRB_Hdr_Rsvd PK;        /*  Reserved, MUST = 0 */
  146.     BYTE    SRB_Target;            /*  Target's SCSI ID */
  147.     BYTE    SRB_Lun;            /*  Target's LUN number */
  148.     BYTE    SRB_ResetRsvd1[14] PK;        /*  Reserved, MUST = 0 */
  149.     BYTE    SRB_HaStat;            /*  Host Adapter Status */
  150.     BYTE    SRB_TargStat;            /*  Target Status */
  151.     FARPROC SRB_PostProc PK;        /*  Post routine */
  152.     BYTE    SRB_ResetRsvd2[34] PK;        /*  Reserved, MUST = 0 */
  153.  
  154. } SRB_BusDeviceReset;
  155.